/*
题目描述
写一个函数，将一个5×5的整形矩阵中最大的元素放在中心，4个角分别放4个最小的元素（顺序为从左到右，从上到下顺序依次从小到大存放）。
所有的元素调整都需要通过位置的交换实现。在main函数中读入和输出矩阵，通过调用函数来实现矩阵的处理过程。

输入
共有5行，每行包括5个用空格隔开的整数，表示整个5×5的矩阵。
保证整个矩阵中所有的元素互不相同，且最大的元素以及最小的4个元素初始时不在矩阵中心或四个角。

输出
与输入格式相同，输出按照题目描述中的方法处理后的矩阵。在每个整数后输出一个空格。
请注意行尾输出换行。
*/
#include <stdio.h>
int main()
{
    int arr[5][5];
    // 获取输入
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    int maxi = 0;
    int maxj = 0;
    int min[4][2];
    // min记录最小值的行号和列号
    // 填充默认值0
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            min[i][j] = 0;
        }
    }
    // 查找四个最小值位置
    for (int k = 0; k < 4; k++)
    {
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                if (arr[i][j] < arr[min[k][0]][min[k][1]])
                {
                    int is = 0;
                    for (int l = 0; l < 4; l++)
                    {
                        if (min[l][0] == i && min[l][1] == j)
                        {
                            is = 1;
                        }
                    }
                    if (is == 0)
                    {
                        min[k][0] = i;
                        min[k][1] = j;
                    }
                }
            }
        }
    }
    // 查找最大值位置
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            if (arr[i][j] > arr[maxi][maxj])
            {
                maxi = i;
                maxj = j;
            }
        }
    }
    // 最大值放在中心
    int t = arr[2][2];
    arr[2][2] = arr[maxi][maxj];
    arr[maxi][maxj] = t;
    // 最小值放在四周
    for (int k = 0; k < 4; k++)
    {
        switch (k)
        {
        case 0:
            t = arr[0][0];
            arr[0][0] = arr[min[k][0]][min[k][1]];
            arr[min[k][0]][min[k][1]] = t;
            break;
        case 1:
            t = arr[0][4];
            arr[0][4] = arr[min[k][0]][min[k][1]];
            arr[min[k][0]][min[k][1]] = t;
            break;
        case 2:
            t = arr[4][0];
            arr[4][0] = arr[min[k][0]][min[k][1]];
            arr[min[k][0]][min[k][1]] = t;
            break;
        case 3:
            t = arr[4][4];
            arr[4][4] = arr[min[k][0]][min[k][1]];
            arr[min[k][0]][min[k][1]] = t;
            break;
        }
    }
    for (int i = 0; i < 5; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}